package com.beifu.manager.service.assetoutservice;

import com.beifu.manager.api.common.PageInfo;
import com.beifu.manager.api.domain.warehouse.InWarehouseDetailResponse;
import com.beifu.manager.api.domain.warehouse.OutWarehouseDetailResponse;
import com.beifu.manager.api.domain.warehouse.washoutwarehousedetail.Summary;
import com.beifu.manager.api.domain.wash.AssetsWashDetailResponse;
import com.beifu.manager.api.domain.wash.RfIdOnly;
import com.beifu.manager.api.domain.wash.WashDetailSummary;
import com.beifu.manager.vo.assetout.AssetOutDetailVo;
import com.beifu.manager.vo.assetout.AssetsOutListApiVo;
import com.mds.manager.utils.PageUtils;
import net.sf.json.JSONObject;

import java.util.List;
import java.util.Map;

/**
 * @Author: licy
 * @Date :  2018/6/17 10:48
 * @Last Modified by: licy
 * @Last Modified time:  2018/6/17 10:48
 */
public interface AssetOutService {
    /**
     * 查询该用户所属机构下的出库详情
     * @param page
     * @return
     */
    PageUtils getAssetOutPages(PageUtils page);

    /**
     *
     * @param assetOutId 出库id
     * @return
     */
    AssetOutDetailVo getAssetOutDetail(String assetOutId,boolean washFlag);


    void createAsstOutOrder(String userId, String organizeId, String create_inTime, String status, List<String> assetTypeSelectArr, List<String> assetTypeNumArr, String create_remark, String destOrganizer, String userOrganizer);

    PageUtils getAssetOutPagesWithWashManage(PageUtils page, boolean washFlag, boolean isDetail);

    /**
     * 获取出库列表
     * @param userId 用户id
     * @return
     */
    PageInfo getOutWarehouseList(int userId, int pageIndex, int pageNumber);

    OutWarehouseDetailResponse getOutWarehouseDetail(Integer userIdInt, int assetsOutIdInt);

    Map<String, String>         uploadOutWarehouse(JSONObject jsonIn, JSONObject jsonPub);

    Summary getWashOutWarehouseDetail(int assetsOutId, int trainUnitId);

    PageInfo getAssetsWashList(Integer userIdInt, int pageIndex, int pageNumber);

    AssetsWashDetailResponse getAssetsWashDetail(int assetWashId);

    WashDetailSummary getWashDetailSubDetail(String assetWashId, String trainUnitId);

    WashDetailSummary uploadwashscanDetail(List<RfIdOnly> rfIdOnlyList, String userId, String devID, String assetWashId, String timestamp);


    PageInfo getInWarehouseList(Integer userIdInt, int pageIndex, int pageNumber);

    InWarehouseDetailResponse getInWarehouseDetail(Integer userIdInt, int assetsOutIdInt);

    Integer upInWarehouseDetail(JSONObject jsonIn, JSONObject jsonPub);

    void upInWarehouseRfidDetail(JSONObject jsonIn, JSONObject jsonPub);

    void upOutWashInWarehouseRfidDetail(JSONObject jsonIn, JSONObject jsonPub);

    AssetsWashDetailResponse getOutWashInWarehouseRfidDetailFin(int assetInId);

    /**
     * 查询洗涤报表
     * @param page
     * @return
     */
    PageUtils getWashByPages(PageUtils page);

    AssetOutDetailVo getAssetOutDetailOut(String assetOutId, boolean b);

    void batchDelAssetOut(String[] idsArr);

    void upInTrainerScanPaperDetail(JSONObject jsonIn, JSONObject jsonPub);
}